home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (PO)
/
Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A).zip
/
Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A).po
/
BLOCK.S
< prev
next >
Wrap
Text File
|
1996-12-24
|
3KB
|
128 lines
*********************
* BLOCK.S *
* BY DAVID HARRIS *
* (C) 1990 BY *
* MINDCRAFT PUBL. *
* CONCORD, MA 01742 *
* *
*********************
* CREATED WITH MERLIN 816
********************************
* EQUATES *
********************************
TBLSTART EQU $06 ; $06-$07 START OF SHAPE
COUNTER EQU $08 ; # LINES COMPLETED
TABLE EQU $09 ; $09-$0A TABLE POINTER
PNTR EQU $0B ; $0B-$0C SCREEN POINTER
YNOW EQU $0D ; CURRENT LINE NUMBER
SCREEN EQU $26 ; $26-$27 = HPOSN DATA
WIDTH EQU $FB ; WIDTH OF SHAPE
HEIGHT EQU $FC ; HEIGHT OF SHAPE
XSTART EQU $FD ; LEFT EDGE OF SCREEN IMAGE
YSTART EQU $FE ; TOP EDGE OF SCREEN IMAGE
MODE EQU $FF ; TRANSFER MODE
START EQU $0300 ; ORIGIN OF CODE
HPOSN EQU $F411 ; FIND ADDRESS OF LINE
ORG START
********************************
* PROGRAM *
********************************
* Poke 6, Least significant byte of table address
* Poke 7, Most significant byte of table address
* Poke 251, Width of block shape
* Poke 252, Height of block shape
* Poke 253, Left X position (in bytes)
* Poke 254, Top Y position
* Poke 255, Transfer mode
* 17 = Logical OR
* 49 = Logical AND
* 81 = Logical EOR
* 209 = Direct copy
* 255 = Capture
* CALL 768 to begin
LDA MODE ; CHECK TRANSFER MODE
CMP #$FF ; IS IT CAPTURE?
BEQ CAPTURE
* Set up code for drawing shape
* LDA (TABLE),Y
* ORA/AND/EOR/CMP (PNTR),Y
STA COLUMN+2 ; STORE TRANSFER MODE
LDA #TABLE
STA COLUMN+1
LDA #PNTR
STA COLUMN+3
BNE BEGIN ; ALWAYS
* Set up code for capturing shape
* LDA (PNTR),Y
* STA (TABLE),Y
CAPTURE LDA #PNTR
STA COLUMN+1
LDA #$91
STA COLUMN+2
LDA #TABLE
STA COLUMN+3
BEGIN LDA TBLSTART ; COPY TBLSTART TO TABLE
STA TABLE ; SO THAT USER VALUES ARE
LDA TBLSTART+1 ; PRESERVED BETWEEN CALLS
STA TABLE+1
LDA YSTART ; GET LINE TO START ON
STA YNOW ; AND PRESERVE
LDA #$00
STA COUNTER ; INITIALIZE COUNTER
ROW LDA YNOW ; Y VALUE
LDX #$00 ; X LSB
LDY #$00 ; X MSB
JSR HPOSN ; CALCULATE BASE ADDRESS
CLC
LDA SCREEN ; ADJUST FOR X POSITION
ADC XSTART
STA PNTR
LDA SCREEN+1
ADC #$00
STA PNTR+1
LDY #$00
* NOTE: The following two lines are modified for
* the transfer mode. In the case of Capture, the
* STA (PNTR),Y is redundant.
COLUMN LDA (TABLE),Y ; SPACE HOLDER
ORA (PNTR),Y ; SPACE HOLDER
STA (PNTR),Y ; PUT ON SCREEN
INY
CPY WIDTH ; FINISHED ROW?
BNE COLUMN ; NO: DO NEXT COLUMN
CLC ; INCREMENT TABLE POINTER
LDA TABLE ; TO POINT TO NEXT ROW
ADC WIDTH
STA TABLE
LDA #$00
ADC TABLE+1
STA TABLE+1
INC YNOW ; NEXT ROW
INC COUNTER
LDA COUNTER
CMP HEIGHT ; FINISHED SHAPE?
BNE ROW ; NO: DO NEXT ROW
RTS